查看原文
其他

【源头活水】CNN中编码了多少位置信息?

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

作者:刘宇辰

地址:https://www.zhihu.com/people/liu-yu-chen-86-30-83


论文地址:https://arxiv.org/pdf/2001.08248.pdf
今天要分享的是一篇ICLR2020的spotlight,文章探究了CNN中所编码的绝对位置信息。

01

概述

CNN提取的特征中是否包含绝对位置信息?这是个有趣的问题。我们通常默认CNN不具有编码绝对位置信息的能力,在分类等任务中,我们认为CNN具有平移不变性,也就是说,如果将图像内容向左或向右平移一定距离,得到的结果并不会发生改变;相应地,在检测等任务中,我们认为CNN具有平移同变性,如果将图像中的物体平移一段距离,CNN提取的特征也会向相应的方向平移。
以上两种假设默认了CNN所提取的特征与位置无关,不过,在某些位置相关(position-dependent)的任务中,有一些现象似乎暗示着CNN中可以编码一些位置信息。
显著物体检测(salient object detection)任务
例如,在显著物体检测任务中,对于相同的物体,在不同的边缘下,模型的检测结果是不同的。我们可以参考上图中的左侧两幅图,在第一幅图中,模型检测到的显著物体主要集中在男人的背后;但将图片的右侧裁剪掉1/3后,模型检测到的显著物体明显向左(也就是新图片的中央)移动了。在物体相同的情况下,模型的检测结果不同,这是否说明了模型受到了图像边缘变化的影响?
为了探究这一现象,更为了满足人们的好奇心,作者设计了一系列的实验,最终证明,CNN中的确可以编码一些绝对位置信息。

02

实验设置

给定一个预训练好的CNN,如何检测它提取出的特征中是否包含位置信息?作者构建了如图所示的位置编码网络(PosENet),首先使用给定的CNN(称为Encoder)提取一张图像中的特征,随后将该CNN的若干Block中提取的特征进行拼接,输入到PosENet中;PosENet是一个单层的CNN,并且没有padding,作者将特征输入其中并训练PosENet,训练的目标则是生成一个只与绝对位置有关、与其他特征无关的图案。需要注意的是,在训练的过程中,Encoder的参数处于锁定状态。
五种目标图案
由于PosENet的结构很简单,只能对输入特征进行简单的读出(Readout),如果输入特征中包含绝对位置的信息,输出图像便能比较好地近似目标图像;如果输入特征中不包含任何绝对位置信息,则目标图像对于模型来说则类似随机噪声,因此不能输出有规则的图案。
在上述假设的前提下,作者进行了一系列的实验。其中,作者使用VGG16与Resnet-152两种CNN作为Encoder来提取特征,使用DUT-S数据集进行训练、PASCAL-S数据集进行验证;在验证时,除了使用数据集中的原始图像,作者还分别将纯黑、纯白、高斯噪声图像作为输入,这是为了验证在没有语义信息的情况下,特征中是否包含绝对位置信息。
作者用两种指标衡量输出图像与目标图像的相关性,分别是Spearmen相关系数(SPC, Spearmen Correlation)与平均绝对误差(MAE, Mean Absolute Error),前者越高说明输出与目标图像的相关性越高,后者则相反。

03

实验结果

原论文中共包含7个实验,此处仅介绍比较重要的实验。
实验1 绝对位置信息是否存在?
作者将三种特征作为输入,分别是VGG16、Resnet-152提取的特征图,以及未经任何处理的原图像,在表格中分别记作VGG, ResNet, PosENet. 之所以将原图像作为输入,是因为原图像本身是不包含位置信息的,因此可以表现PosENet自身提取位置信息的能力,起对照作用(尤其是排除了PosENet对目标图像过拟合,忽视输入的情况)。
根据实验结果,可以得出以下结论:首先,VGG与ResNet在评测指标上都远高于PosENet,这说明CNN提取的特征图中确实是包含位置信息的;其次,ResNet的指标普遍好于VGG,说明其提取位置信息的能力强于VGG,这可能是由于ResNet的层数更多,有更大的感受域以及更高程度的非线性。
上图是实验的可视化效果,其中前两列分别是输入图像与目标的图案;第三列是直接将原图像输入到PosENet后的效果,可以看到生成图像与目标图像之间基本没有关系;第四列、第五列分别是VGG与ResNet的生成效果,生成图像很接近目标图像,且ResNet的效果要好一些。
实验2 位置信息从何而来?
现在我们已经知道,CNN可以编码一定的位置信息,那么位置信息从何而来呢?作者给出了他的答案:zero-padding. 我们知道,在使用卷积核对图像进行滤波时,受图像的边缘所限,滤波后的特征图要比原图像更小,因此为了保持图像大小,我们常常会使用zero-padding扩充原图像的边缘,以保持卷积后的图像大小。作者发现,CNN中提取的位置信息很有可能是来自zero-padding的。
为此,作者使用VGG与PosENet进行了实验。结果发现,在为PosENet添加zero-padding后,即使是简单地将原图像输入到PosENet中,PosENet也能在很大程度上提取位置信息,并且在扩大zero-padding后,其提取位置信息的效果也更好;相对地,VGG本身可以较好地提取位置信息,但是将VGG中的zero-padding去除后,提取位置信息的效果则大大下降。
由实验可知,CNN提取的位置信息在很大程度上是由zero-padding带来的。
实验3 Zero-padding在位置相关工作中的影响
现有的计算机视觉研究中,有些问题是位置无关的,如分类等;有些问题则是位置相关的,如目标检测、语义分割等。现在我们知道,zero-padding可以带来一定的位置信息,那么zero-padding对于位置相关的任务影响如何呢?
(a) 显著性检测 (b) 语义分割
作者使用VGG16在两种位置相关的工作中进行了实验,将有zero-padding与没有zero-padding的VGG16的结果进行对比,发现在两种工作上,有zero-padding的VGG效果都远超出了没有zero-padding的情况。这说明,zero-padding带来的位置信息对于位置相关工作是很重要的,现有的目标检测、实体分割等位置相关工作的模型,也通常会显示或隐式地在模型中加入位置信息。

04

结论与争议

这篇文章得出了很有趣的结论:首先,CNN确实可以编码一定的绝对位置信息;其次,这些绝对位置信息在很大程度上来自图像周围的zero-padding;第三,模型的层数越深、感受域越大,或非线性程度越高,则能编码更多的位置信息;第四,一些位置相关的任务确实对CNN所编码的位置信息有依赖。
从直觉上来讲,zero-padding相当于隐式地给出了图像的边缘信息,确实能带来绝对位置信息;而如果刨除zero-padding,CNN中理应没有其他机制可以提取位置信息。因此,文章的结论在我个人看来是可以接受的。
这篇文章的争议主要集中在这里:PosENet能根据输入特征生成目标图案,未必意味着特征中包含位置信息,也可能是因为PosENet对于目标图案产生了过拟合,无论输入是什么,总能生成类似的图案。对此,作者在OpenReview上回复,过拟合情况确实可能出现,但应该只会出现在训练集上,并不会影响测试集。
这个回复本身也有一定的争议,在PosENet足够大时,它理应有可能出现忽视输入特征,直接生成目标图案的情况。不过,实际上,PosENet只是简单的一层CNN,并不具有很强的过拟合能力,只能对输入特征进行简单的readout;另一方面,作者进行了将原图像输入的对比实验,发现效果并不好,这也排除了PosENet对目标图案过拟合、忽视输入的情况。
因此,虽然文章的实验设计不够严谨,但我认为并不影响结论的有效性。

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。

直播预告



“源头活水”历史文章




分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存